안드로이드의 백그라운드 정책(Service)

개발자 입장에서 안드로이드를 아이폰과 비교했을 때 큰 강점은 자유로운 백그라운드 작업이였습니다. 안드로이드 버전이 진화하고 시장의 흐름에 변화에 따라 안드로이드의 백그라운드 정책도 변화하고 있습니다. 

편의성 vs 보안

백그라운드 작업을 통해 사용자 편의를 위한 많은 작업들을 자연스럽게 처리 할 수 있었고, 소켓 연결 등 푸시서비스와 비슷한 기능도 구현할 수 있었습니다. 하지만 이러한 편의성은 보안의 허점이 되기도 합니다. 바로 앱을 실행하지 않은 상태에서도 사진, 오디오, 영상 등 민감한 정보를 서버로 빼낼 수 있다는 점입니다.

배터리 관리

예전폰(aka 피처폰)과 달리 스마트폰 시래가 도래함에 따라 스마트폰의 일일 사용량도 증가하고, 컴퓨팅파워 또한 증가하여 배터리 소모량이 커지게 되었습니다. 사용자는 배터리에 대해 많은 관심을 가지고 있고, 배터리가 방전된다는것은 전화, 문자를 비롯한 모든 앱을 사용할 수 없음을 의미합니다. 그러므로 배터리 전원 관리는 사용자에게 있어서 매우 중요한 부분이며, 최근 구글의 안드로이드도 이를 존중하여 매 메이저 업데이트 때마다 베터리 관련 정책에 대한 부분을 업데이트 해왔습니다.

Play Store의 정책

앱 보안 및 실적 개선에 대한 Play Store 정책의 일부로 Target API는 현재 출시된 Android 버전보다 1년 이상 오래되지 않아야 합니다. Target API를 최신 상태로 유지하면 앱이 최신 플랫폼 릴리즈에서 제공되는 보안 및 성능 향상을 활용할 수 있습니다. 앱의 Target API는 업데이트 때 마다 백그라운드, 포어그라운드 요구사항을 평가하는 중요한 사항이며, 이는 전력 및 성능에 큰 영향을 줄 수 있습니다.

 

안드로이드 버전별 백그라운드 정책 변천사

안드로이드는 메이저 업데이트 때마다 베터리를 관리하기 위한 여러 기능들을 포함해왔습니다. 아래의 내용을 살펴보도록 하겠습니다.  개발자의 고통의 서막

베터리 세이버와 도즈모드는 앱 전체에 적용되도록 작동하지만 어댑티브 배터리(딥마인드 ML모델로 구동되는 앱 대기 버킷)와 백그라운드 제한은 앱별로 작동합니다. 아래 다이어그램은 예정된 작업이 언제 실행되는지 알 수 있습니다.

오레오 버전 이상을 대상으로 앱을 업데이트 할 때 아래의 체크 리스트를 확인하여 백그라운드 작업을 설정할 수 있습니다.

현재 사용하고 있는 방법 오레오이상에서 사용해야 하는 방법
JobScheduler JobScheduler
Firebase JobDispatcher Firebase JobDispatcher
Background Service JobScheduler
Foreground Service Foreground Service와 해당 서비스를 종료해야 할 액션(stopService)

Note: 현재는 WorkManager 라이브러리가 Alpha단계이므로 위의 방법으로 개발을 해야하지만 WorkManager가 정식 버전이 출시 되는대로, 거의 모든 경우에 대해 WorkManager를 쓰면 해결이 됩니다. WorkManager의 대한 포스팅을 확인해보세요. 

올바른 앱을 만드는 전략

앱 개발자 및 기획자가 올바른 디자인 패턴 및 아키텍처에 투자하는 것이 중요하다는 점을 감안할 때 다음 전략을 관장합니다.

  • 사용자가 앱을 적극적으로 사용할 때 필요한 작업들을 수행한다.
  • 백그라운드에서 수행하는 작업은 지연 가능할만한 작업들로 만듭니다.
  • 포어그라운드 서비스를 사용할 때에는 노티피케이션을 반드시 제공하여 사용자가 서비스를 중지 할 수 있도록 합니다.
  • 알람, 네트워크 및 FCM 메시지와 같은 OS 기반의 작업에서는 이와 관련된 전원관리 제한사항에 대한 별도의 문서를 제공하고 있으니 확인하시기 바랍니다.

 

카테고리: 미분류

0개의 댓글

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.